All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class com.sun.java.swing.JLayeredPane

java.lang.Object
   |
   +----java.awt.Component
           |
           +----java.awt.Container
                   |
                   +----com.sun.java.swing.JComponent
                           |
                           +----com.sun.java.swing.JLayeredPane

public class JLayeredPane
extends JComponent
implements Accessible
JLayeredPane adds depth to a JFC/Swing container, allowing components to overlap each other when needed. An Integer object specifies each component's depth in the container, where higher-numbered components sit "on top" of other components.

For convenience, JLayeredPane divides the depth-range into several different layers. Putting a component into one of those layers makes it easy to ensure that components overlap properly, without having to worry about specifying numbers for specific depths:

DEFAULT_LAYER
The standard layer, where most components go. This the bottommost layer.
PALETTE_LAYER
The palette layer sits over the default layer. Useful for floating toolbars and palettes, so they can be positioned above other components.
MODAL_LAYER
The layer used for modal dialogs. They will appear on top of any toolbars, palettes, or standard components in the container.
POPUP_LAYER
The popup layer displays above dialogs. That way, the popup windows associated with combo boxes, tooltips, and other help text will appear above the component, palette, or dialog that generated them.
DRAG_LAYER
When dragging a component, reassigning it to the drag layer ensures that it is positioned over every other component in the container. When finished dragging, it can be reassigned to its normal layer.
The JLayeredPane methods moveToFront(Component), moveToBack(Component) and setPosition can be used to reposition a component within its layer. The setLayer method can also be used to change the component's current layer.

Details

JLayeredPane manages it's list of children like Container, but allows for the definition of a several layers within itself. Children in the same layer are managed exactly like the normal Container object, with the added feature that when children components overlap, children in higher layers display above the children in lower layers.

Each layer is a distinct integer number. The layer attribute can be set on a Component by passing an Integer object during the add call.
For example:

     layeredPane.add(child, JLayeredPane.DEFAULT_LAYER);
 or
     layeredPane.add(child, new Integer(10));
 
The layer attribute can also be set on a Component by calling
     layeredPaneParent.setLayer(child, 10)
on the JLayeredPane that is the parent of component. The layer should be set before adding the child to the parent.

Higher number layers display above lower number layers. So, using numbers for the layers and letters for individual components, a representative list order would look like this:

       5a, 5b, 5c, 2a, 2b, 2c, 1a 
where the leftmost components are closest to the top of the display.

A component can be moved to the top or bottom position within its layer by calling moveToFront or moveToBack.

The position of a component within a layer can also be specified directly. Valid positions range from 0 up to one less than the number of components in that layer. A value of -1 indicates the bottommost position. A value of 0 indicates the topmost position. Unlike layer numbers, higher position values are lower in the display.

Note: This sequence (defined by java.awt.Container) is the reverse of the layer numbering sequence. Usually though, you will use moveToFront, moveToBack, and setLayer.
Here are some examples using the method add(Component, layer, position): Calling add(5x, 5, -1) results in:
       5a, 5b, 5c, 5x, 2a, 2b, 2c, 1a 
Calling add(5z, 5, 2) results in:
       5a, 5b, 5z, 5c, 5x, 2a, 2b, 2c, 1a 
Calling add(3a, 3, 7) results in:
       5a, 5b, 5z, 5c, 5x, 3a, 2a, 2b, 2c, 1a 
Using normal paint/event mechanics results in 1a appearing at the bottom and 5a being above all other components.

Note: that these layers are simply a logical construct and LayoutManagers will affect all child components of this container without regard for layer settings.

Warning: serialized objects of this class will not be compatible with future swing releases. The current serialization support is appropriate for short term storage or RMI between Swing1.0 applications. It will not be possible to load serialized Swing1.0 objects with future releases of Swing. The JDK1.2 release of Swing will be the compatibility baseline for the serialized form of Swing objects.

See Also:

Variable Index

 o DEFAULT_LAYER
Convenience object defining the Default layer.
 o DRAG_LAYER
Convenience object defining the Drag layer.
 o FRAME_CONTENT_LAYER
Convenience object defining the Frame Content layer.
 o LAYER_PROPERTY
Bound property
 o MODAL_LAYER
Convenience object defining the Modal layer.
 o PALETTE_LAYER
Convenience object defining the Palette layer.
 o POPUP_LAYER
Convenience object defining the Popup layer.

Constructor Index

 o JLayeredPane()
Create a new JLayeredPane

Method Index

 o addImpl(Component, Object, int)
 o getAccessibleContext()
Get the AccessibleContext associated with this JComponent
 o getComponentCountInLayer(int)
Returns the number of children currently in the specified layer.
 o getComponentsInLayer(int)
Returns an array of the components in the specified layer.
 o getComponentToLayer()
Returns the hashtable that maps components to layers.
 o getIndexOf(Component)
Returns the index of the specified Component.
 o getLayer(Component)
Returns the layer attribute for the specified Component.
 o getLayer(JComponent)
Gets the layer property for a JComponent, it does not cause any side effects like setLayer().
 o getLayeredPaneAbove(Component)
Convenience method that returns the first JLayeredPane which contains the specified component.
 o getObjectForLayer(int)
Returns the Integer object associated with a specified layer.
 o getPosition(Component)
Get the relative position of the component within its layer.
 o highestLayer()
Returns the highest layer value from all current children.
 o insertIndexForLayer(int, int)
Primative method that determines the proper location to insert a new child based on layer and position requests.
 o isOptimizedDrawingEnabled()
Returns false if components in the pane can overlap, which makes optimized drawing impossible.
 o lowestLayer()
Returns the lowest layer value from all current children.
 o moveToBack(Component)
Moves the component to the bottom of the components in it's current layer (position -1).
 o moveToFront(Component)
Moves the component to the top of the components in it's current layer (position 0).
 o paint(Graphics)
Paints this JLayeredPane within the specified graphics context.
 o putLayer(JComponent, int)
Sets the layer property on a JComponent.
 o remove(int)
Remove the indexed component from this pane.
 o setLayer(Component, int)
Sets the layer attribute on the specified component, making it the bottommost component in that layer.
 o setLayer(Component, int, int)
Sets the layer attribute for the specified component and also sets its position within that layer.
 o setPosition(Component, int)
Moves the component to position within it's current layer, where 0 is the topmost position within the layer and -1 is the bottommost position.

Variables

 o DEFAULT_LAYER
 public static final Integer DEFAULT_LAYER
Convenience object defining the Default layer. Equivalent to new Integer(0).

 o PALETTE_LAYER
 public static final Integer PALETTE_LAYER
Convenience object defining the Palette layer. Equivalent to new Integer(100).

 o MODAL_LAYER
 public static final Integer MODAL_LAYER
Convenience object defining the Modal layer. Equivalent to new Integer(200).

 o POPUP_LAYER
 public static final Integer POPUP_LAYER
Convenience object defining the Popup layer. Equivalent to new Integer(300).

 o DRAG_LAYER
 public static final Integer DRAG_LAYER
Convenience object defining the Drag layer. Equivalent to new Integer(400).

 o FRAME_CONTENT_LAYER
 public static final Integer FRAME_CONTENT_LAYER
Convenience object defining the Frame Content layer. This layer is normally only use to positon the contentPane and menuBar components of JFrame. Equivalent to new Integer(-30000).

See Also:
JFrame
 o LAYER_PROPERTY
 public static final String LAYER_PROPERTY
Bound property

Constructors

 o JLayeredPane
 public JLayeredPane()
Create a new JLayeredPane

Methods

 o addImpl
 protected void addImpl(Component comp,
                        Object constraints,
                        int index)
Overrides:
addImpl in class Container
 o remove
 public void remove(int index)
Remove the indexed component from this pane. This is the absolute index, ignoring layers.

Parameters:
index - an int specifying the component to remove
Overrides:
remove in class Container
See Also:
getIndexOf
 o isOptimizedDrawingEnabled
 public boolean isOptimizedDrawingEnabled()
Returns false if components in the pane can overlap, which makes optimized drawing impossible. Otherwise, returns true.

Returns:
false if components can overlap, else true
Overrides:
isOptimizedDrawingEnabled in class JComponent
See Also:
isOptimizedDrawingEnabled
 o putLayer
 public static void putLayer(JComponent c,
                             int layer)
Sets the layer property on a JComponent. This method does not cause any side effects like setLayer() (painting, add/remove, etc). Normally you should use the instance method setLayer(), in order to get the desired side-effects (like repainting).

Parameters:
c - the JComponent to move
layer - an int specifying the layer to move it to
See Also:
setLayer
 o getLayer
 public static int getLayer(JComponent c)
Gets the layer property for a JComponent, it does not cause any side effects like setLayer(). (painting, add/remove, etc) Normally you should use the instance method getLayer().

Parameters:
c - the JComponent to check
Returns:
an int specifying the component's layer
 o getLayeredPaneAbove
 public static JLayeredPane getLayeredPaneAbove(Component c)
Convenience method that returns the first JLayeredPane which contains the specified component. Note that all JFrames have a JLayeredPane at their root, so any component in a JFrame will have a JLayeredPane parent.

Parameters:
c - the Component to check
Returns:
the JLayeredPane that contains the component, or null if no JLayeredPane is found in the component hierarchy
See Also:
JFrame, JRootPane
 o setLayer
 public void setLayer(Component c,
                      int layer)
Sets the layer attribute on the specified component, making it the bottommost component in that layer. Should be called before adding to parent.

Parameters:
c - the Component to set the layer for
layer - an int specifying the layer to set, where lower numbers are closer to the bottom
 o setLayer
 public void setLayer(Component c,
                      int layer,
                      int position)
Sets the layer attribute for the specified component and also sets its position within that layer.

Parameters:
c - the Component to set the layer for
layer - an int specifying the layer to set, where lower numbers are closer to the bottom
position - an int specifying the position within the layer, where 0 is the topmost position and -1 is the bottommost position
 o getLayer
 public int getLayer(Component c)
Returns the layer attribute for the specified Component.

Parameters:
c - the Component to check
Returns:
an int specifying the component's current layer
 o getIndexOf
 public int getIndexOf(Component c)
Returns the index of the specified Component. This is the absolute index, ignoring layers. Index numbers, like position numbers, have the topmost component at index zero. Larger numbers are closer to the bottom.

Parameters:
c - the Component to check
Returns:
an int specifying the component's index
 o moveToFront
 public void moveToFront(Component c)
Moves the component to the top of the components in it's current layer (position 0).

Parameters:
c - the Component to move
See Also:
setPosition
 o moveToBack
 public void moveToBack(Component c)
Moves the component to the bottom of the components in it's current layer (position -1).

Parameters:
c - the Component to move
See Also:
setPosition
 o setPosition
 public void setPosition(Component c,
                         int position)
Moves the component to position within it's current layer, where 0 is the topmost position within the layer and -1 is the bottommost position.

Note: Position numbering is defined by java.awt.Container, and is the opposite of layer numbering. Lower position numbers are closer to the top (0 is topmost), and higher position numbers are closer to the bottom.

Parameters:
c - the Component to move
position - an int in the range -1..N-1, where N is the number of components in the component's current layer
 o getPosition
 public int getPosition(Component c)
Get the relative position of the component within its layer.

Parameters:
c - the Component to check
Returns:
an int giving the component's position, where 0 is the topmost position and the highest index value = the count count of components at that layer, minus 1
See Also:
getComponentCountInLayer
 o highestLayer
 public int highestLayer()
Returns the highest layer value from all current children. Returns 0 if there are no children.

Returns:
an int indicating the layer of the topmost component in the pane, or zero if there are no children
 o lowestLayer
 public int lowestLayer()
Returns the lowest layer value from all current children. Returns 0 if there are no children.

Returns:
an int indicating the layer of the bottommost component in the pane, or zero if there are no children
 o getComponentCountInLayer
 public int getComponentCountInLayer(int layer)
Returns the number of children currently in the specified layer.

Parameters:
layer - an int specifying the layer to check
Returns:
an int specifying the number of components in that layer
 o getComponentsInLayer
 public Component[] getComponentsInLayer(int layer)
Returns an array of the components in the specified layer.

Parameters:
layer - an int specifying the layer to check
Returns:
an array of Components contained in that layer
 o paint
 public void paint(Graphics g)
Paints this JLayeredPane within the specified graphics context.

Parameters:
g - the Graphics context within which to paint
Overrides:
paint in class JComponent
 o getComponentToLayer
 protected Hashtable getComponentToLayer()
Returns the hashtable that maps components to layers.

Returns:
the Hashtable used to map components to their layers
 o getObjectForLayer
 protected Integer getObjectForLayer(int layer)
Returns the Integer object associated with a specified layer.

Parameters:
layer - an int specifying the layer
Returns:
an Integer object for that layer
 o insertIndexForLayer
 protected int insertIndexForLayer(int layer,
                                   int position)
Primative method that determines the proper location to insert a new child based on layer and position requests.

Parameters:
layer - an int specifying the layer
position - an int specifying the position within the layer
Returns:
an int giving the (absolute) insertion-index
See Also:
getIndexOf
 o getAccessibleContext
 public AccessibleContext getAccessibleContext()
Get the AccessibleContext associated with this JComponent

Returns:
the AccessibleContext of this JComponent
Overrides:
getAccessibleContext in class JComponent

All Packages  Class Hierarchy  This Package  Previous  Next  Index